home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Shareware / IDimager Personal 4.2.0.3 / setup_IDimager_Personal_V4.exe / {app} / web / modules / labeltree.psc < prev    next >
Text File  |  2008-06-04  |  7KB  |  188 lines

  1. %code
  2. const
  3.   cIndentString = '   ';    // the trailing space is required for IE
  4.  
  5. var
  6.   AShowCounts: Boolean;
  7.  
  8.   function StringRepeat(AString: WideString; ARepeat: Integer): WideString;
  9.   var
  10.     i: Integer;
  11.   begin
  12.     result := toWideString('');
  13.     for i := 1 to ARepeat do
  14.       result := result + AString;
  15.   end;
  16.  
  17.   function FormatResult (AGUID: String; AName: WideString; ACount: Integer);
  18.   begin
  19.     result := toWideString('');
  20.  
  21.     result := result + '<a href="javascript:getHTML(''%var:PageOffset/./modules/labelimages.psc'', ''thumbs'', ''GUID=' + AGUID + ''');">';
  22.     if AShowCounts then
  23.       result := result + WideFormat ('%s [%d]', [AName, ACount])
  24.     else
  25.       result := result + AName;
  26.  
  27.     result := result + '</a>';
  28.   end;
  29.  
  30. var
  31.   AParentGUID: String;
  32.   ALink: WideString;
  33.   ALevel: Integer;
  34.   ACats: TCatalogPropCategories;
  35.   ACat: TCatalogPropCategory;
  36.   ACatParent: Boolean;
  37.   AProps: TCatalogItemProps;
  38.   AParent, AProp: TCatalogItemProp;
  39.   i: Integer;
  40.   AExpand: Boolean;
  41. begin
  42.   result := toWideString('');
  43.  
  44.   AShowCounts := (Request.Params.Values['showCounts'] = 'y');
  45.  
  46.   AParentGUID := Trim(Request.Params.Values['GUID']);
  47.   if AParentGUID = '' then
  48.     AParentGUID := 'top';
  49.  
  50.   AExpand := Request.Params.Values['expand'] ='y';
  51.  
  52.   if not IsValidNumberString(Request.Params.Values['level'], False) then
  53.     ALevel := 0
  54.   else
  55.     ALevel := StrToInt(Request.Params.Values['level']);
  56.  
  57.   if AParentGUID = 'top' then
  58.   begin
  59.     ACats := TCatalogPropCategories.Create (TCatalogPropCategory, '');
  60.     Catalog.EnumCategories (ACats, AShowCounts);
  61.  
  62.     for i := 0 to ACats.Count - 1 do
  63.     begin
  64.       ACat := ACats.Items[i];
  65.  
  66.       ALink := 'javascript:getHTML(''%var:PageOffset/./modules/labeltree.psc'', ''' + ACat.GUID + ''', ''GUID=' + ACat.GUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=y&level=' + IntToStr(ALevel + 1) + ''')';
  67.  
  68.       result := result + '<div id="' + ACat.GUID + '">';
  69.       if Catalog.CategoryHasSubs (ACat) then
  70.       begin
  71.         result := result + '<a href="' + ALink + '">' + 
  72.                            '   <img src="%var:PageOffset/images/expand.gif">' + 
  73.                            '</a> ' + 
  74.                            '<a href="' + ALink + '">' + 
  75.                            ACat.CategoryName + 
  76.                            '</a>' +
  77.                            '';
  78.       end
  79.       else
  80.         result := result + '<img src="%var:PageOffset/images/noindent.gif"> ' + 
  81.                            ACat.CategoryName + 
  82.                            '<br/>';
  83.  
  84.       result := result + '</div>';
  85.     end;
  86.  
  87.     ACats.Free;
  88.   end
  89.   else
  90.   begin
  91.     ACatParent := False;
  92.  
  93.     AParent := TCatalogItemProp.Create(nil);
  94.     if ALevel = 1 then
  95.     begin
  96.       ACat := TCatalogPropCategory.Create(nil);
  97.       if Catalog.EnumCategory (AParentGUID, ACat, AShowCounts) then
  98.       begin
  99.         AParent.GUID       := ACat.GUID;
  100.         AParent.PropName   := ACat.CategoryName;
  101.         AParent.PhotoCount := ACat.PhotoCount;
  102.         ACatParent := True;
  103.       end;
  104.       ACat.Free;
  105.     end
  106.     else
  107.     begin
  108.       Catalog.EnumProp (AParentGUID, AParent, AShowCounts);
  109.     end;
  110.  
  111.     if AExpand then
  112.     begin
  113.       if ACatParent then
  114.         ALink := 'javascript:getHTML(''%var:PageOffset/./modules/labeltree.psc'', ''' + AParent.GUID + ''', ''GUID=' + AParent.GUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=n&level=' + IntToStr(ALevel) + ''')'
  115.       else
  116.         ALink := 'javascript:getHTML(''%var:PageOffset/./modules/labeltree.psc'', ''' + AParent.GUID + ''', ''GUID=' + AParent.GUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=n&level=' + IntToStr(ALevel) + ''')';
  117.  
  118.       result := result + StringRepeat(cIndentString, ALevel - 1) + 
  119.                          '<a href="' + ALink + '">' + 
  120.                          '   <img src="%var:PageOffset/images/collapse.gif">' + 
  121.                          '</a> ' + 
  122.                          iif (ACatParent, 
  123.                              '<a href="' + ALink + '">' + AParent.PropName + '</a>',
  124.                              FormatResult(AParent.GUID, AParent.PropName, AParent.PhotoCount)
  125.                              ) +
  126.                          '';
  127. {
  128.       result := result + StringRepeat(cIndentString, ALevel - 1) + 
  129.                          '<a href="javascript:getHTML(''%var:PageOffset/./modules/labeltree.psc'', ''' + AParent.GUID + ''', ''GUID=' + AParent.GUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=n&level=' + IntToStr(ALevel) + ''');">' + 
  130.                          '   <img src="%var:PageOffset/images/collapse.gif">' + 
  131.                          '</a> ' + 
  132.                          FormatResult(AParent.GUID, AParent.PropName, AParent.PhotoCount) + 
  133.                          ''
  134. }
  135.     end
  136.     else
  137.     begin
  138.       if ACatParent then
  139.         ALink := 'javascript:getHTML(''%var:PageOffset/./modules/labeltree.psc'', ''' + AParent.GUID + ''', ''GUID=' + AParent.GUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=y&level=' + IntToStr(ALevel) + ''')'
  140.       else
  141.         ALink := 'javascript:getHTML(''%var:PageOffset/./modules/labeltree.psc'', ''' + AParent.GUID + ''', ''GUID=' + AParent.GUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=y&level=' + IntToStr(ALevel) + ''')';
  142.  
  143.       result := result + StringRepeat(cIndentString, ALevel - 1) + 
  144.                          '<a href="' + ALink + '">' + 
  145.                          '   <img src="%var:PageOffset/images/expand.gif">' + 
  146.                          '</a> ' + 
  147.                          iif (ACatParent, 
  148.                              '<a href="' + ALink + '">' + AParent.PropName + '</a>',
  149.                              FormatResult(AParent.GUID, AParent.PropName, AParent.PhotoCount)
  150.                              ) +
  151.                          '';
  152.     end;
  153.  
  154.     if AExpand then
  155.     begin
  156.       AProps := TCatalogItemProps.Create (TCatalogItemProp, '');
  157.       Catalog.EnumPropsForParent (AParentGUID, AProps, False, AShowCounts);
  158.  
  159.       for i := 0 to AProps.Count - 1 do
  160.       begin
  161.         AProp := AProps.Items[i];
  162.  
  163.         result := result + '<div id="' + AProp.GUID + '">';
  164.         if Catalog.PropHasSubs (AProp) then
  165.         begin
  166.           result := result + StringRepeat(cIndentString, ALevel) + 
  167.                              '<a href="javascript:getHTML(''%var:PageOffset/./modules/labeltree.psc'', ''' + AProp.GUID + ''', ''GUID=' + AProp.GUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=y&level=' + IntToStr(ALevel + 1) + ''');">' + 
  168.                              '   <img src="%var:PageOffset/images/expand.gif">' + 
  169.                              '</a> ' + 
  170.                              FormatResult(AProp.GUID, AProp.PropName, AProp.PhotoCount) + 
  171.                              '';
  172.         end
  173.         else
  174.           result := result + StringRepeat(cIndentString, ALevel) + 
  175.                              '<img src="%var:PageOffset/images/noindent.gif"> ' + 
  176.                              FormatResult(AProp.GUID, AProp.PropName, AProp.PhotoCount) +
  177.                              '<br/>';
  178.  
  179.         result := result + '</div>';
  180.       end;
  181.  
  182.       AProps.Free;
  183.     end;
  184.  
  185.     AParent.Free;
  186.   end;
  187. end;
  188. %/code